const moment = require('moment')
const db = uniCloud.database();
const taskCollection = db.collection('taskRecords')

const invokeAddTaskRecord = async (params) => {
	try {
		console.log("执行任务记录写入", params)

		// 验证必填参数（使用params而非event，因为这是中间件接收的参数）
		const requiredFields = ['name', 'status', 'executionTime']
		const missingFields = requiredFields.filter(field => !(field in params))

		if (missingFields.length > 0) {
			return {
				code: 400,
				message: `缺少必要参数: ${missingFields.join(', ')}`,
				success: false
			}
		}

		// 验证状态值合法性
		const validStatus = ['success', 'error', 'running']
		if (!validStatus.includes(params.status)) {
			return {
				code: 400,
				message: `状态值无效，必须是: ${validStatus.join(', ')}`,
				success: false
			}
		}

		// 准备要插入的数据（使用params而非event）
		const taskRecord = {
			// 任务名称（必填）
			name: params.name,
			// 执行状态（必填）：success, failed, running
			status: params.status,
			cloudFunctionName: params.cloudFunctionName || ""
			// 执行时间（必填）：时间戳
			executionTime: params.executionTime,
			// 执行时长（可选）
			duration: params.duration || '',
			// 执行日志（可选）
			log: params.log || '',
			// 任务ID（可选）：关联到任务定义表
			taskId: params.taskId || '',
			// 创建时间：服务器时间
			createTime: moment().format('YYYY-MM-DD HH:mm:ss'),
			// 额外信息（可选）
			extra: params.extra || {}
		}

		// 插入数据到数据库（修正语法，无需data包裹）
		const result = await taskCollection.add(taskRecord)

		// 返回成功结果
		return {
			code: 200,
			message: '任务执行记录添加成功',
			success: true,
			data: {
				recordId: result._id,
				createTime: taskRecord.createTime
			}
		}
	} catch (error) {
		// 捕获并处理错误
		console.error('添加任务记录失败:', error)
		return {
			code: 500,
			message: '添加任务记录失败: ' + error.message,
			success: false,
			error: error.message
		}
	}
};

// 默认暴露（整个模块作为一个函数导出）
module.exports = invokeAddTaskRecord;